home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / CIncludes / TextEncodingConverter.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-12  |  8.4 KB  |  278 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        TextEncodingConverter.h
  3.  
  4.      Contains:    Text Encoding Conversion Interfaces.
  5.  
  6.      Version:    Technology:    System 7.7
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1994-1997 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __TEXTENCODINGCONVERTER__
  19. #define __TEXTENCODINGCONVERTER__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #ifndef __MIXEDMODE__
  25. #include <MixedMode.h>
  26. #endif
  27. #ifndef __TEXTCOMMON__
  28. #include <TextCommon.h>
  29. #endif
  30.  
  31.  
  32.  
  33. #if PRAGMA_ONCE
  34. #pragma once
  35. #endif
  36.  
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif
  40.  
  41. #if PRAGMA_IMPORT
  42. #pragma import on
  43. #endif
  44.  
  45. #if PRAGMA_STRUCT_ALIGN
  46.     #pragma options align=mac68k
  47. #elif PRAGMA_STRUCT_PACKPUSH
  48.     #pragma pack(push, 2)
  49. #elif PRAGMA_STRUCT_PACK
  50.     #pragma pack(2)
  51. #endif
  52.  
  53. typedef OSType                             TECPluginSignature;
  54. typedef UInt32                             TECPluginVersion;
  55. /* plugin signatures */
  56.  
  57. enum {
  58.     kTECSignature                = FOUR_CHAR_CODE('encv'),
  59.     kTECUnicodePluginSignature    = FOUR_CHAR_CODE('puni'),
  60.     kTECJapanesePluginSignature    = FOUR_CHAR_CODE('pjpn'),
  61.     kTECChinesePluginSignature    = FOUR_CHAR_CODE('pzho'),
  62.     kTECKoreanPluginSignature    = FOUR_CHAR_CODE('pkor')
  63. };
  64.  
  65.  
  66. /* converter object reference */
  67. typedef struct OpaqueTECObjectRef*         TECObjectRef;
  68. typedef struct OpaqueTECSnifferObjectRef*  TECSnifferObjectRef;
  69. typedef OSType                             TECPluginSig;
  70. struct TECConversionInfo {
  71.     TextEncoding                     sourceEncoding;
  72.     TextEncoding                     destinationEncoding;
  73.     UInt16                             reserved1;
  74.     UInt16                             reserved2;
  75. };
  76. typedef struct TECConversionInfo TECConversionInfo;
  77.  
  78. /* return number of encodings types supported by user's configuraton of the encoding converter */
  79. EXTERN_API( OSStatus )
  80. TECCountAvailableTextEncodings    (ItemCount *            numberEncodings);
  81.  
  82. /* fill in an array of type TextEncoding passed in by the user with types of encodings the current configuration of the encoder can handle. */
  83. EXTERN_API( OSStatus )
  84. TECGetAvailableTextEncodings    (TextEncoding             availableEncodings[],
  85.                                  ItemCount                 maxAvailableEncodings,
  86.                                  ItemCount *            actualAvailableEncodings);
  87.  
  88. /* return number of from-to encoding conversion pairs supported  */
  89. EXTERN_API( OSStatus )
  90. TECCountDirectTextEncodingConversions (ItemCount *        numberOfEncodings);
  91.  
  92. /* fill in an array of type TextEncodingPair passed in by the user with types of encoding pairs the current configuration of the encoder can handle. */
  93. EXTERN_API( OSStatus )
  94. TECGetDirectTextEncodingConversions (TECConversionInfo     availableConversions[],
  95.                                  ItemCount                 maxAvailableConversions,
  96.                                  ItemCount *            actualAvailableConversions);
  97.  
  98. /* return number of encodings a given encoding can be converter into */
  99. EXTERN_API( OSStatus )
  100. TECCountDestinationTextEncodings (TextEncoding             inputEncoding,
  101.                                  ItemCount *            numberOfEncodings);
  102.  
  103. /* fill in an array of type TextEncodingPair passed in by the user with types of encodings pairs the current configuration of the encoder can handle. */
  104. EXTERN_API( OSStatus )
  105. TECGetDestinationTextEncodings    (TextEncoding             inputEncoding,
  106.                                  TextEncoding             destinationEncodings[],
  107.                                  ItemCount                 maxDestinationEncodings,
  108.                                  ItemCount *            actualDestinationEncodings);
  109.  
  110. /* get info about a text encoding */
  111. EXTERN_API( OSStatus )
  112. TECGetTextEncodingInternetName    (TextEncoding             textEncoding,
  113.                                  Str255                 encodingName);
  114.  
  115. EXTERN_API( OSStatus )
  116. TECGetTextEncodingFromInternetName (TextEncoding *        textEncoding,
  117.                                  ConstStr255Param         encodingName);
  118.  
  119. /* create/dispose converters */
  120. EXTERN_API( OSStatus )
  121. TECCreateConverter                (TECObjectRef *            newEncodingConverter,
  122.                                  TextEncoding             inputEncoding,
  123.                                  TextEncoding             outputEncoding);
  124.  
  125. EXTERN_API( OSStatus )
  126. TECCreateConverterFromPath        (TECObjectRef *            newEncodingConverter,
  127.                                  const TextEncoding     inPath[],
  128.                                  ItemCount                 inEncodings);
  129.  
  130. EXTERN_API( OSStatus )
  131. TECDisposeConverter                (TECObjectRef             newEncodingConverter);
  132.  
  133. /* convert text encodings */
  134. EXTERN_API( OSStatus )
  135. TECClearConverterContextInfo    (TECObjectRef             encodingConverter);
  136.  
  137. EXTERN_API( OSStatus )
  138. TECConvertText                    (TECObjectRef             encodingConverter,
  139.                                  ConstTextPtr             inputBuffer,
  140.                                  ByteCount                 inputBufferLength,
  141.                                  ByteCount *            actualInputLength,
  142.                                  TextPtr                 outputBuffer,
  143.                                  ByteCount                 outputBufferLength,
  144.                                  ByteCount *            actualOutputLength);
  145.  
  146. EXTERN_API( OSStatus )
  147. TECFlushText                    (TECObjectRef             encodingConverter,
  148.                                  TextPtr                 outputBuffer,
  149.                                  ByteCount                 outputBufferLength,
  150.                                  ByteCount *            actualOutputLength);
  151.  
  152. /* one-to-many routines */
  153. EXTERN_API( OSStatus )
  154. TECCountSubTextEncodings        (TextEncoding             inputEncoding,
  155.                                  ItemCount *            numberOfEncodings);
  156.  
  157. EXTERN_API( OSStatus )
  158. TECGetSubTextEncodings            (TextEncoding             inputEncoding,
  159.                                  TextEncoding             subEncodings[],
  160.                                  ItemCount                 maxSubEncodings,
  161.                                  ItemCount *            actualSubEncodings);
  162.  
  163. EXTERN_API( OSStatus )
  164. TECGetEncodingList                (TECObjectRef             encodingConverter,
  165.                                  ItemCount *            numEncodings,
  166.                                  Handle *                encodingList);
  167.  
  168. EXTERN_API( OSStatus )
  169. TECCreateOneToManyConverter        (TECObjectRef *            newEncodingConverter,
  170.                                  TextEncoding             inputEncoding,
  171.                                  ItemCount                 numOutputEncodings,
  172.                                  const TextEncoding     outputEncodings[]);
  173.  
  174.  
  175. EXTERN_API( OSStatus )
  176. TECCreateOneToManyConverterFromPath (TECObjectRef *        newEncodingConverter,
  177.                                  const TextEncoding     inPath[],
  178.                                  ItemCount                 inEncodings,
  179.                                  ItemCount                 numOutputEncodings,
  180.                                  const TextEncoding     outputEncodings[]);
  181.  
  182. EXTERN_API( OSStatus )
  183. TECConvertTextToMultipleEncodings (TECObjectRef         encodingConverter,
  184.                                  ConstTextPtr             inputBuffer,
  185.                                  ByteCount                 inputBufferLength,
  186.                                  ByteCount *            actualInputLength,
  187.                                  TextPtr                 outputBuffer,
  188.                                  ByteCount                 outputBufferLength,
  189.                                  ByteCount *            actualOutputLength,
  190.                                  TextEncodingRun         outEncodingsBuffer[],
  191.                                  ItemCount                 maxOutEncodingRuns,
  192.                                  ItemCount *            actualOutEncodingRuns);
  193.  
  194. EXTERN_API( OSStatus )
  195. TECFlushMultipleEncodings        (TECObjectRef             encodingConverter,
  196.                                  TextPtr                 outputBuffer,
  197.                                  ByteCount                 outputBufferLength,
  198.                                  ByteCount *            actualOutputLength,
  199.                                  TextEncodingRun         outEncodingsBuffer[],
  200.                                  ItemCount                 maxOutEncodingRuns,
  201.                                  ItemCount *            actualOutEncodingRuns);
  202.  
  203. /* international internet info */
  204. EXTERN_API( OSStatus )
  205. TECCountWebTextEncodings        (RegionCode             locale,
  206.                                  ItemCount *            numberEncodings);
  207.  
  208. EXTERN_API( OSStatus )
  209. TECGetWebTextEncodings            (RegionCode             locale,
  210.                                  TextEncoding             availableEncodings[],
  211.                                  ItemCount                 maxAvailableEncodings,
  212.                                  ItemCount *            actualAvailableEncodings);
  213.  
  214. EXTERN_API( OSStatus )
  215. TECCountMailTextEncodings        (RegionCode             locale,
  216.                                  ItemCount *            numberEncodings);
  217.  
  218. EXTERN_API( OSStatus )
  219. TECGetMailTextEncodings            (RegionCode             locale,
  220.                                  TextEncoding             availableEncodings[],
  221.                                  ItemCount                 maxAvailableEncodings,
  222.                                  ItemCount *            actualAvailableEncodings);
  223.  
  224. /* examine text encodings */
  225. EXTERN_API( OSStatus )
  226. TECCountAvailableSniffers        (ItemCount *            numberOfEncodings);
  227.  
  228. EXTERN_API( OSStatus )
  229. TECGetAvailableSniffers            (TextEncoding             availableSniffers[],
  230.                                  ItemCount                 maxAvailableSniffers,
  231.                                  ItemCount *            actualAvailableSniffers);
  232.  
  233. EXTERN_API( OSStatus )
  234. TECCreateSniffer                (TECSnifferObjectRef *    encodingSniffer,
  235.                                  TextEncoding             testEncodings[],
  236.                                  ItemCount                 numTextEncodings);
  237.  
  238. EXTERN_API( OSStatus )
  239. TECSniffTextEncoding            (TECSnifferObjectRef     encodingSniffer,
  240.                                  TextPtr                 inputBuffer,
  241.                                  ByteCount                 inputBufferLength,
  242.                                  TextEncoding             testEncodings[],
  243.                                  ItemCount                 numTextEncodings,
  244.                                  ItemCount                 numErrsArray[],
  245.                                  ItemCount                 maxErrs,
  246.                                  ItemCount                 numFeaturesArray[],
  247.                                  ItemCount                 maxFeatures);
  248.  
  249. EXTERN_API( OSStatus )
  250. TECDisposeSniffer                (TECSnifferObjectRef     encodingSniffer);
  251.  
  252. EXTERN_API( OSStatus )
  253. TECClearSnifferContextInfo        (TECSnifferObjectRef     encodingSniffer);
  254.  
  255.  
  256.  
  257.  
  258. #if PRAGMA_STRUCT_ALIGN
  259.     #pragma options align=reset
  260. #elif PRAGMA_STRUCT_PACKPUSH
  261.     #pragma pack(pop)
  262. #elif PRAGMA_STRUCT_PACK
  263.     #pragma pack()
  264. #endif
  265.  
  266. #ifdef PRAGMA_IMPORT_OFF
  267. #pragma import off
  268. #elif PRAGMA_IMPORT
  269. #pragma import reset
  270. #endif
  271.  
  272. #ifdef __cplusplus
  273. }
  274. #endif
  275.  
  276. #endif /* __TEXTENCODINGCONVERTER__ */
  277.  
  278.